package com.heatup.apt.api.service;

import java.util.List;
import java.util.Map;

import com.heatup.apt.model.api.ApiResultModel;
import com.heatup.apt.model.api.course.CourseDetailModel;
import com.heatup.apt.model.api.course.CourseResultModel;
import com.heatup.apt.model.api.course.CourseSignModel;
import com.heatup.apt.model.coach.CoachModel;
import com.heatup.apt.model.course.CoachFeeDetailVo;
import com.heatup.apt.model.course.CourseInfo;
import com.heatup.apt.model.course.UserCourseSignDetailModel;
import com.heatup.apt.model.order.OrderInfo;
import com.heatup.apt.model.user.UserInfo;

/**
 * Created by b3st9u on 16/8/20.
 */
public interface CourseService {
    /**
     * 根据ID查询课程信息
     *
     * @param id
     * @return
     */
    CourseResultModel queryCourseById(int id);


    /**
     * 根据课程ID查询教练
     *
     * @param course_id
     * @return
     */
    CoachModel queryCoachByCourseId(int course_id);


    /**
     * 查询课程签到信息
     * @param orderInfo
     * @param userId
     * @return
     */
	CourseSignModel querySignInfo(OrderInfo orderInfo, int userId);


	/**
	 * 课程签到
	 * @param orderInfo
	 * @param userId
	 * @return 出错返回-1，否则返回成功的课程序号
	 */
	int sign(OrderInfo orderInfo, int userId);


	/**
	 * 教练端 团课列表
	 *
	 * @param paramsMap
	 * @return
	 */
    ApiResultModel queryCoachTeamCourseListByMobile(Map<String, Object> paramsMap) throws Exception;

    /**
     * 教练端 团课列表
     *
     * @param paramsMap
     * @return
     */
    ApiResultModel queryCoachCampCourseListByMobile(Map<String, Object> paramsMap);

    /**
     * 教练端 私教列表
     *
     * @param paramsMap
     * @return
     */
    Map<String, Object> queryCoachPrivateCourseListByMobile(Map<String, Object> paramsMap);
    
    /**
     * 根据课程id查询课程信息
     */
    CourseInfo getCourseInfoById(Integer courseId);
    
    /**
     * 根据订单得到价格
     */
    Map<String, Object> getPrice(Integer orderId);

    /**
     * API 查询课程详情(团课/私教/檬营)
     *
     * @param courseId 课程 ID
     * @param userInfo
     * @return 课程详情
     */
    CourseDetailModel queryCourseByCourseId(Integer courseId, Integer userInfo);
    
    /**
     * 费用明细团课
     * @param paramsMap
     * @return
     */
    public List<CoachFeeDetailVo> queryCoachFeeDetail( Map<String, Object> paramsMap);
    
    /**
     * 查询私教咨询详情
     * @return
     */
    public Map<String,Object> queryConsultCourseDetail();

    /**
     *@Author: timo
     *@Date: 2018/4/2 18:51
     *@Description:
     * 查询私教课程得签到记录
     *
     */
    Map queryPrivateCourseSignDetailLog(UserInfo userInfo, Integer orderId);
}
